Prevod carky na tecku u vkladani desetinneho cisla do SQL dotazu pomoci Delphi
Otázka od: little_bobes@centrum.cz
26. 4. 2004 12:55
pomoci Delphi
Zdravim,
v Delphi si vytvarim SQL dotaz, ktery si posilam na FB 1.5.
SQL dotaz vytvarim zhruba takto:
dotaz := format('update TABULKA set HODNOTA = %f where ID = %d',
[T1.Fields[0].AsFloat, T2.Fields[0].AsInteger]);
Stale jsem nemohl prijit na to, proc se mi parametr AsFloat vklada do dotazu
s desetinnou carkou (coz zpusobovalo chybu SQL), kdyz se mi ve Watch Listu
zobrazuje s desetinnou teckou.
Po delsim case jsem zjistil, ze je to nastavenim narodniho prostredi v
ovladacich panelech Windows.
Musel jsem si proto udelat funkci na prevod z Float na String, nahradit
pripadnou carku za tecku a vysledny retezec vlozit do dotazu:
dotaz := format('update TABULKA set HODNOTA = %s where ID = %d',
[PrevodNaTecku(T1.Fields[0].AsFloat), T2.Fields[0].AsInteger]);
Nyni se ptam, zda jsem nahodou nezapomnel na nejaky jiny zpusob, jak vlozit
Float do SQL tak, aby se vlozil vzdy s teckou.
Nebo se, prosim, podelte o to, jakym zpusobem toto resite vy.
Diky Bob
(D4 c/s, FB 1.5)
Odpovedá: Jiri Foldyna
26. 4. 2004 12:36
pomoci Delphi
> v Delphi si vytvarim SQL dotaz, ktery si posilam na FB 1.5.
> SQL dotaz vytvarim zhruba takto:
> dotaz := format('update TABULKA set HODNOTA = %f where ID = %d',
> [T1.Fields[0].AsFloat, T2.Fields[0].AsInteger]);
>
> Stale jsem nemohl prijit na to, proc se mi parametr AsFloat
> vklada do dotazu
> s desetinnou carkou (coz zpusobovalo chybu SQL), kdyz se mi
> ve Watch Listu
> zobrazuje s desetinnou teckou.
> Po delsim case jsem zjistil, ze je to nastavenim narodniho prostredi v
> ovladacich panelech Windows.
>
> Musel jsem si proto udelat funkci na prevod z Float na
> String, nahradit
> pripadnou carku za tecku a vysledny retezec vlozit do dotazu:
> dotaz := format('update TABULKA set HODNOTA = %s where ID = %d',
> [PrevodNaTecku(T1.Fields[0].AsFloat), T2.Fields[0].AsInteger]);
>
> Nyni se ptam, zda jsem nahodou nezapomnel na nejaky jiny
> zpusob, jak vlozit
> Float do SQL tak, aby se vlozil vzdy s teckou.
> Nebo se, prosim, podelte o to, jakym zpusobem toto resite vy.
Ahoj,
zkus neco jako
TmpDecSep : char;
...
TmpDecSep := DecimalSeparator; // odlozit DecimalSeparator
DecimalSeparator := '.'; // nastavit tecku
// tady formatuj dotaz
dotaz := format('update TABULKA set HODNOTA = %f where ID = %d',
[T1.Fields[0].AsFloat, T2.Fields[0].AsInteger]);
...
DecimalSeparator := TmpDecSep; // vratit DecimalSeparator
...
Zdravim
Jiri Foldyna
mailto:jiri.f@avizo.cz
Odpovedá: petr palicka
26. 4. 2004 12:30
pomoci Delphi
Ahoj,
nastav si promennou DecimalSeparator na '.'.
var
ds: Char;
...
begin
...
ds:=DecimalSeparator;
DecimalSeparator:='.';
...
DecimalSeparator:=ds;
...
end;
Peca